#!/usr/bin/env python3
# 导入必要的模块
import os    # 操作系统接口模块
import sys   # 系统相关参数和函数模块
from PIL import Image  # Python图像处理库

# 定义帮助信息
HELP_MESSAGE = """
Usage: {} input.gif output_dir
Options:
  --help    显示帮助信息

功能：将GIF动画分解为多张PNG图片帧
示例：{} animation.gif frames/
""".format(sys.argv[0], sys.argv[0])

# 检查是否需要显示帮助信息
if len(sys.argv) == 2 and sys.argv[1] == '--help':
    print(HELP_MESSAGE)
    exit(0)

# 检查命令行参数是否足够
if len(sys.argv) < 3:
    print('参数不足！使用 --help 查看用法')
    exit(-1)

# 获取输入参数
gifimg = sys.argv[1]  # 第一个参数：GIF文件路径
outdir = sys.argv[2]  # 第二个参数：输出目录路径

# 打开GIF图像文件
im = Image.open(gifimg)
# 如果输出目录不存在则创建
if not os.path.exists(outdir):
    os.mkdir(outdir)

i = 0  # 初始化帧计数器
try:
    # 循环提取GIF的每一帧
    while True:
        im.seek(i)  # 定位到第i帧
        # 保存当前帧为PNG格式，文件名格式为frameX.png
        im.save(os.path.join(outdir, 'frame' + str(i) + '.png'))
        i += 1  # 增加帧计数器
except:
    pass  # 当所有帧处理完毕时捕获异常并退出循环

# 打印处理的总帧数
print('images:', i)

